A storage controller can be used as a storage server to store, manage, and retrieve data from storage devices on behalf of one or more clients on a network. The storage devices can include, for example, magnetic or optical storage-based disks or tapes, or solid state devices. Some storage controllers are designed to service file-level requests from clients, as is commonly the case with file servers used in a network attached storage (NAS) environment. Other storage controllers are designed to service block-level requests from clients, as with storage controllers used in a storage area network (SAN) environment. Still other storage controllers are capable of servicing both file-level requests and block-level requests, as is the case with some storage controllers made by NetApp, Inc. of Sunnyvale, Calif.
As the workload complexity and throughput needs increase, a single storage controller maybe insufficient to manage the needs of the clients on the network. One solution to such a situation is to combine several storage controllers, also referred to as nodes, into a node group. One or more nodes and a group of storage devices (e.g., disks) assembled in a rack, or other similar enclosure, can be conventionally interconnected via a communication fabric to form an integrated storage system. To clients, such a storage system will still appear as a single server.
Internally, however, workload reaching the node group is distributed evenly among the node group members so that some nodes are not overwhelmed. In some storage systems, several node groups are created to handle different functions in the system, where each node group manages an associated group of storage devices. The group of storage devices, managed by an associated node group, is also referred to as a shared storage group (“SSG”). For example, in a storage system with multiple node groups, one node group may be responsible for managing the needs of a particular set of clients while another node group may handle the needs of other clients. Although such flexible node group configurations are beneficial as they allow highly efficient resource allocation, they can be difficult to administer.
A network administrator typically configures at least one node in a node group to be a master node. In general, the master node takes “ownership” of the SSG associated with the node group and is responsible for performing various SSG management related tasks. Thus, in addition to performing the same duties as the other nodes in the node group, the master node is responsible for managing the SSG. Typically, the master node is selected by the nodes of the node group using a complex arbitration scheme or is manually selected by a network administer.
Although the network administrator may use various criteria to select a master node, master nodes are typically selected based on availability. Availability refers to a node's capacity to provide continuous access to storage network resources, even when serious network failures occur. Thus, the network administrator is often faced with the task of finding the most highly available node in the node group to select as the node group's master node. Finding the most highly available nodes in possibly overlapping node groups may be difficult to do and may require the network administrator to use time-consuming trial and error techniques.